#pragma once

#include <math.h>

struct Vector4
{
public:
	union {
		struct {
			float x, y, z, w;
		};
		struct {
			float r, g, b, a;
		};
	};

	inline Vector4() 
	{
		x = y = z = w = 0.0f;
	}

	inline Vector4(float ax, float ay, float az = 0.0f, float aw = 0.0f)
	{
		x = ax;
		y = ay;
		z = az;
		w = aw;
	}

	inline bool operator== (const Vector4& rhs) 
	{
		return this->x == rhs.x && this->y == rhs.y && this->z == rhs.z && this->w == rhs.w;
	}

	inline float* Ptr()
	{
		return &x;
	}
};

typedef Vector4 Vector3;
typedef Vector4 Vector2;
typedef Vector4 Color;


/*
Vector3 operator+(const Vector3& lhs, const Vector3& rhs)
{
	return Vector3(lhs.x + rhs.x, lhs.y + rhs.y, lhs.z + rhs.z);
}
*/


